package baidumodel.entity.chat;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * api :<a href="https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/text2image/sd_xl">https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/text2image/sd_xl</a>
 *
 * @Author wuchenxi
 * @Date 2023-07-23 17:58:34
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class StableDiffusionXLParam implements Serializable {

    /**
     * 提示词，即用户希望图片包含的元素。长度限制为1024字符，建议中文或者英文单词总数量不超过150个
     */
    private String prompt;

    /**
     * 反向提示词，即用户希望图片不包含的元素。长度限制为1024字符，建议中文或者英文单词总数量不超过150个
     */
    private String negative_prompt;
    /**
     * 生成图片长宽，默认值 1024x1024，取值范围如下：
     * ["512x512", "768x768", "768x1024", "1024x768", "576x1024", "1024x576", "1024x1024"]
     * 注意：建议选择较大尺寸，结合完善的prompt，以保障图片质量。
     */
    private String size;

    /**
     * 生成图片数量，说明：
     * · 默认值为1
     * · 取值范围为1-4
     * · 单次生成的图片较多及请求较频繁可能导致请求超时
     */
    private Integer n;

    /**
     * 迭代轮次，说明：
     * · 默认值为20
     * · 取值范围为10-50
     */
    private Integer steps;

    /**
     * 采样方式，默认值：Euler a，可选值如下：
     * · Euler
     * · Euler a
     * · DPM++ 2M
     * · DPM++ 2M Karras
     * · LMS Karras
     * · DPM++ SDE
     * · DPM++ SDE Karras
     * · DPM2 a Karras
     * · Heun
     * · DPM++ 2M SDE
     * · DPM++ 2M SDE Karras
     * · DPM2
     * · DPM2 Karras
     * · DPM2 a
     * · LMS
     */
    private String sampler_index;

    /**
     * 表示最终用户的唯一标识符，可以监视和检测滥用行为，防止接口恶意调用
     */
    private String user_id;

}
